package org.example.domain.service;

import org.example.vo.ContributorVO;
import org.example.vo.KeyContributorsVO;

import java.util.concurrent.ExecutionException;

/**
 * Description: 数据计算服务
 * Created by 陈宇 on 2024-12-27 14:37
 * Created with IntelliJ IDEA.
 * @author 陈宇
 */
public interface RepositoryServiceDomain {

    /**
     * 获取关键贡献者列表（展示 用户名 贡献度 影响力）
     * @param name 仓库名
     * @param platform
     * @param date 日期
     * @param type 类型 0：按月
     * @return
     * @throws ExecutionException
     * @throws InterruptedException
     */
    KeyContributorsVO queryKeyContributorsByMonth(String name, String platform, String date, Integer type) throws ExecutionException, InterruptedException;

    /**
     * 按年获取关键贡献者列表
     * @param name 项目名称
     * @param platform 平台名称
     * @param date 结束时间
     * @return
     * @throws ExecutionException
     * @throws InterruptedException
     */
    KeyContributorsVO queryKeyContributorsByYear(String name, String platform, String date) throws ExecutionException, InterruptedException;

    /**
     * 按照范围时间获取关键贡献者列表
     * @param name
     * @param platform
     * @param startDate
     * @param date
     * @return
     */
    KeyContributorsVO rangeQueryKeyContributors(String name, String platform, String startDate, String date) throws ExecutionException, InterruptedException;

    /**
     * 根据时间和用户 id，查询该用户各项指标数据
     * @param platform
     * @param repoName
     * @param userId
     * @param date
     * @return
     */
    ContributorVO queryContributorByDate(String platform, String repoName, String userId, String startDate, String date) throws ExecutionException, InterruptedException;
}
